//package org.example.service.impl;
//
//import com.alibaba.fastjson.JSON;
//import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
//import lombok.extern.slf4j.Slf4j;
//import org.example.entity.O2oOrderReq;
//import org.example.entity.O2oOrderResp;
//import org.example.entity.O2oPreOrderResp;
//import org.example.service.O2oOrderStrategyService;
//import org.springframework.beans.BeanUtils;
//import org.springframework.beans.factory.InitializingBean;
//
//@Slf4j
//public class EleO2oOrderStrategyServiceImpl implements O2oOrderStrategyService, InitializingBean {
//
//    /**
//     * 创建O2O订单
//     *
//     * @param o2oOrderReq
//     * @return
//     */
//    @Override
//    public O2oOrderResp createOrder(O2oOrderReq o2oOrderReq) {
//        O2oOrderResp o2oOrderResp = new O2oOrderResp();
//        OrderService orderService = getConfigAndToken();
//
//        CreateOrderReq createOrderReq = new CreateOrderReq();
//        PreCreateOrderReq preCreateOrderReq = getReq(o2oOrderReq);
//        BeanUtils.copyProperties(preCreateOrderReq,createOrderReq);
//        createOrderReq.setOrderType(O2oOrderTypeEnum.CREATE.getValue());
//        createOrderReq.setReceiverName(o2oOrderReq.getReceiverName());
//        createOrderReq.setReceiverPrimaryPhone(o2oOrderReq.getReceiverPhone());
//        log.info("createOrder Req:{}", JSON.toJSONString(createOrderReq));
//
//        try {
//            CreateOrderRes order = orderService.createOrder(createOrderReq);
//            if (order != null) {
//                o2oOrderResp.setOutOrderId(order.getOrderId());
//            }
//            log.info("createOrder resp:{}", JSON.toJSONString(order));
//        } catch (ServiceException e) {
//            log.error("createOrder error", e);
//        }
//
//        return o2oOrderResp;
//    }
//    /**
//     * 预发布模式创建O2O订单
//     *
//     * @param o2oOrderReq
//     * @return
//     */
//    @Override
//    public O2oPreOrderResp preCreateOrder(O2oOrderReq o2oOrderReq) {
//        O2oOrderResp o2oOrderResp = new O2oOrderResp();
//        OrderService orderService = getConfigAndToken();
//
//        PreCreateOrderReq preCreateOrderReq = getReq(o2oOrderReq);
//        preCreateOrderReq.setOrderType(O2oOrderTypeEnum.PRECREATE.getValue());
//        log.info("preCreateOrderReq:{}", JSON.toJSONString(preCreateOrderReq));
//
//        try {
//            PreCreateOrderRes preCreateOrderRes = orderService.preCreateOrder(preCreateOrderReq);
//            log.info("preCreateOrderRes:{}", JSON.toJSONString(preCreateOrderRes));
//            if (preCreateOrderRes != null) {
//                o2oOrderResp.setDistance(Double.valueOf(preCreateOrderRes.getDistance()));
//                List<GoodsInfo> goodsInfoList = preCreateOrderRes.getList();
//                if(CollectionUtils.isNotEmpty(goodsInfoList)){
//                    Long totalDeliveryAmountCent = goodsInfoList.stream().mapToLong(GoodsInfo::getTotalDeliveryAmountCent).sum();
//                    Long actualDeliveryAmountCent = goodsInfoList.stream().mapToLong(GoodsInfo::getActualDeliveryAmountCent).sum();
//                    String totalDeliveryAmountYuan = AmountConversionUtil.fenToYuan(String.valueOf(totalDeliveryAmountCent));
//                    String actualDeliveryAmountYuan = AmountConversionUtil.fenToYuan(String.valueOf(actualDeliveryAmountCent));
//                    o2oOrderResp.setDeliverFee(Double.valueOf(totalDeliveryAmountYuan));
//                    o2oOrderResp.setFee(Double.valueOf(actualDeliveryAmountYuan));
//                }
//            }
//        } catch (ServiceException e) {
//            log.info("ServiceException，e:{}", e);
//        }
//
//        O2oPreOrderResp o2oPreOrderResp = new O2oPreOrderResp();
//        BeanUtils.copyProperties(o2oOrderResp,o2oPreOrderResp);
//        return o2oPreOrderResp;
//    }
//
//    @Override
//    public void afterPropertiesSet() {
//        O2oOrderStrategyFactory.register(O2oSpTypeEnum.ELE_ME.getValue(), this);
//    }
//}
